<?php

namespace Addons\AliPlay;

use Common\Controller\Addon;

/**
 * 支付宝插件
 *
 * @author Marvin(柳英伟)
 *         QQ:448332799
 */
class AliPlayAddon extends Addon
{
    public $info = array(
        'name' => 'AliPlay',
        'title' => '支付宝',
        'description' => '支付宝插件,后台配置支持变量。如：价格：$GOODS["price"].但是配置的变量要和数据库商品信息一致。',
        'status' => 1,
        'author' => 'Marvin(柳英伟)',
        'version' => '2.0'
    );

    public function install()
    {
        // 添加钩子
        $Hooks = M("Hooks");
        $AliPlay = array(
            array(
                'name' => 'indexAliPlay',
                'description' => '支付宝钩子',
                'type' => 1,
                'update_time' => NOW_TIME,
                'addons' => 'indexAliPlay'
            )
        );
        $Hooks->addAll($AliPlay, array(), true);
        if ($Hooks->getDbError()) {
            session('addons_install_error', $Hooks->getError());
            return false;
        }
        return true;
    }

    public function uninstall()
    {
        $Hooks = M("Hooks");
        $map ['name'] = array(
            'in',
            'indexAliPlay'
        );
        $res = $Hooks->where($map)->delete();
        if ($res == false) {
            session('addons_install_error', $Hooks->getError());
            return false;
        }
        return true;
    }

    // 实现的indexAliPlay钩子方法
    public function indexAliPlay($param)
    {
        $config = $this->getConfig();
        // 检查插件是否开启
        if ($config ['codelogin']) {
            $post = get_addon_config('AliPlay');
            if ($config ['PARTNER']) {
                // 判断用户选择的接口类型，决定配置文件的写入路径
                $pay_type = '';
                switch ($config ['pay_type']) {
                    case 1 :
                        $pay_type = 'danbao';
                        break;
                    case 2 :
                        $pay_type = 'jishi';
                        break;
                    case 3 :
                        $pay_type = 'wangguan';
                        break;
                }
                // 读取文件中的内容
                $str = file_get_contents("./Addons/AliPlay/Play/" . $pay_type . "/lib/aliplay.php");
                $zz = array();
                $rep = array();
                foreach ($post as $key => $value) {
                    $zz [] = "/define\(\"{$key}\",\s*.*?\);/i";
                    $rep [] = "define(\"{$key}\", \"{$value}\");";
                }
                // 改写文件中的内容
                $str = preg_replace($zz, $rep, $str);
                file_put_contents("./Addons/AliPlay/Play/" . $pay_type . "/lib/aliplay.php", $str);
                $this->assign('pay_type', $pay_type);
                $this->assign('config', $config);
                $this->display('AliPlay');
            }
        }
    }
}